package model

import (
	_ "github.com/go-sql-driver/mysql"
	"github.com/go-xorm/xorm"
	"log"
	"xorm.io/core"
)

//定义为全局的，全局可以引用数据库引擎
var Engine *xorm.Engine

//初始化数据库
func init() {
	var err error
	//创建数据库引擎
	Engine, err = xorm.NewEngine("mysql", "root:123456@tcp(123.57.250.120:3306)/learngo")
	if err != nil {
		log.Printf("init mysql err =%v\n", err)
		return
	}
	//ping 下看下是否 连接成功 与redis 类似
	if err := Engine.Ping(); err != nil {
		log.Printf("ping err= %v\n", err)
		return
	}
	log.Println("mysql init success,database connect")
	//名称映射规则主要负责结构体名称到表名和结构体field到表字段的名称映射
	//SnakeMapper支持struct为驼峰式命名，表结构为下划线命名之间的转换
	Engine.SetTableMapper(core.SnakeMapper{})
	//展示执行sql 日志
	Engine.ShowSQL(true)
	//数据struct 同步到的mysql 中
	if err := Engine.Sync(new(Accout), new(UserInfo), new(GroupInfo)); err != nil {
		log.Printf("sync Accout err = %v\n", err)
	}
}
